A general purpose of ontological engineering is to define models of knowledge designed to improve the ability to collect and disseminate knowledge. Over years of practice, many meta-languages have been defined to assist in the development of knowledge models.
Differences between meta-languages are primarily based on their purpose and use. Meta-languages—such as DAML+OIL, OWL, and RDF—are markup schemes designed to encode knowledge in a standardized fashion. Language structure may also be used to differentiate various meta-languages. Languages whose structure is frame-based include FLogic, OKBC, and KM. Further, descriptive logic-based languages include KL-ONE, RACER, and Gellish, and languages based on first-order logic include CycL and KIF.
However, each of these meta-languages have unique benefits and drawbacks which must be analyzed prior deciding which meta-language is best to encode a particular collection of knowledge. If it is desired to re-encode the same collection of knowledge into another meta-language, a significant amount of rework is often necessary. Additionally, integration of knowledge encoded in different meta-languages may be very difficult, often requiring re-encoding of the disparate sources into a new, common representation.